window: Unset source ID before possibly destroying the widget
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 21 Mar 2014 14:31:40 +0000 (15:31 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Fri, 21 Mar 2014 14:41:10 +0000 (15:41 +0100)
If the delete event ends up destroying the widget, unsetting
priv->delete_event_handler will happen on invalid memory, so
unset it before the widget is possibly destroyed.

https://bugzilla.gnome.org/show_bug.cgi?id=726825

gtk/gtkwindow.c

index d48ecbaa2d6e7dd55085e6c68d9182856a134bd8..3dc11728e3902d3279aea655b0dd3628e201943e 100644 (file)
@@ -1303,12 +1303,11 @@ send_delete_event (gpointer data)
 
   event->any.window = g_object_ref (gtk_widget_get_window (window));
   event->any.send_event = TRUE;
+  priv->delete_event_handler = 0;
 
   gtk_main_do_event (event);
   gdk_event_free (event);
 
-  priv->delete_event_handler = 0;
-
   return G_SOURCE_REMOVE;
 }